1. Field of the Invention
This invention relates to accessing assets and more particularly relates to parallelizing access to shared assets.
2. Description of the Related Art
Data processing systems include a plurality of assets such as servers, blade servers, pages of memory, storage devices, and the like. The assets of a data processing system may be shared among one or more processes executing on the data processing system. For example, a plurality of processes may share pages of memory.
The data processing system may allocate access to the shared assets so that all processes may acquire needed shared assets in a timely manner. As used herein, shared assets are referred to as assets. In addition, the data processing system must reduce interference between processes in acquiring assets.
Data processing systems have employed queues to allocate assets. A queue may include a data set such as a delimited entry in a file, a data structure in an array of linked data structures, a database entry, and the like. The data set may identify an asset. For example, a data set may include the address of a storage device asset.
Assets may be shared by unlinking or removing the data set for an asset from the queue and allocating the data set and the asset to a process. Similarly, assets may be returned to the queue by linking the data set for the asset to the queue. Queues may be organized as first-in/first-out queues, last-in/first-out queues, and the like.
Unfortunately, there may be a conflict between processes if more than one process attempts to concurrently acquire an asset from a queue. As a result, a queue may employ a queue lock wherein only a process that is granted the asset lock may access the queue. Other processes must wait until they are granted the queue lock before accessing the queue.
Queue locks effectively prevent interference between processes seeking to acquire assets. Unfortunately, the processes may wait a significant time in order to receive a queue lock. As a result, valuable processing time may be lost while the processes are idle.